草庐IT

Java HotSpot 枚举开销

全部标签

java - JVM 可以在运行时优化一个不变的枚举方法吗?

JVM能否在以下场景下进行运行时优化?我们有以下情况,我们有这个接口(interface):publicinterfaceECSResource{defaultintgetFor(finalEntityentity){returnResourceRetriever.forResource(this).getFor(entity);}}以及具体的实现如:privatestaticenumTestResourcesimplementsECSResource{TR1,TR2;}JVM是否能够(在运行时)确定枚举实例(如TestResources.TR1)属于单个ResourceRetriev

带有AWS Lambda Python 2.7的枚举模块,与Travis CI一起部署

我在Python2.7中有一个从TravisCI部署的AWSLambda处理程序。但是,当我尝试运行该功能时,我收到了AWS的错误,说它无法导入枚举模块(ENUM34)。有没有简单的方法来解决这个问题?TravisCI是否应该包括Python正在运行的虚拟环境?如果没有,我该如何包括该Virtualenv?此外,当我从TravisCI部署时,它似乎会预先置入“索引”。进入Handler_name字段。有人知道为什么会发生这种情况,还是如何禁用它?我似乎找不到答案。看答案解决了。我将Python模块安装到项目根部的子目录中,而不是在项目根本身中。本质上是这样做的:pipinstall-rrequ

Java 8 升级导致继承静态枚举的编译器错误

我们正在将Java6项目升级到Java8。使用Java8重新编译会在java.awt.Frame子类中出现错误,我已简化为以下内容:org/example/Foo.javapackageorg.example;importorg.example.Type;importjava.awt.Frame;publicclassFooextendsFrame{publicFoo(){System.out.println(Type.BAZ);//org/example/Type.javapackageorg.example;publicclassType{publicstaticfinalintB

Java 无法将枚举用作注释的字符串参数(例如 : Jackson)

我正在编写使用Jackson的Java代码用于JSON序列化。我必须在我的类(class)之前使用的一个注释是@JsonTypeName(/*Insertstringhere*/),以便为此类的对象提供唯一的序列化标识符。在我当前的代码中,我们通过使用来自另一个类的全局常量来设置String参数。示例:publicclassAnnotationValues{privatestaticfinalStringid1="1";privatestaticfinalStringid2="2";privatestaticfinalStringid3="3";//Andsoon...}使用这个类,我

java - 是否有更简洁的方法来检索未弃用的枚举值?

请参阅下面的代码。我有一个enum,其中一些值被标记为已弃用。我需要Collection的所有未弃用的enum值。我设法使用反射完成了任务,但对我来说它看起来太冗长了。是否有更简洁的方法来定义@Deprecated标记的存在?importjava.lang.reflect.Field;importjava.util.ArrayList;importjava.util.List;publicclassDeprecatedEnumValues{publicenumMyEnum{AA,BB,@DeprecatedCC,DD,@DeprecatedEE,}publicstaticvoidmai

java - 枚举中的内部类在 Java 中总是静态的吗?

我有一个枚举类,它包含一个Java内部类。例如(在实际代码中,有一些在枚举上声明的方法在内部使用了内部类):publicenumMyEnum{VALUE_1,VALUE_2;privatestaticclassMyInnerClass//isstatichereneededorcanitberemoved?{}}PMD告诉我不需要'static'修饰符(违反UnusedModifier规则)。这是正确的还是PMD错误?备注:Thisquestion不是重复的,它与我在这里问的相反。 最佳答案 static关键字不是多余的。您可以创建

Java:访问枚举(enum)中的常量

阅读SCJP书,我在第1章“自测”中发现了类似的内容:enumAnimals{DOG("woof"),CAT("meow"),FISH("burble");Stringsound;Animals(Strings){sound=s;}}classTestEnum{staticAnimalsa;publicstaticvoidmain(String[]args){System.out.println(a.DOG.sound+""+a.FISH.sound);//thefollowinglineisfrommeSystem.out.println(Animals.DOG.sound+""+A

java - Processing 2.0 中的枚举

This问题是指版本1.2.1,它不会在不同的部分编译,所以它不是重复的。我想在Processing中使用枚举。我读过它们在单独的文件中工作得更好,所以我已经这样做了。此代码编译正确:enumStatus{STOPPED,MOVING};但是当我有这段代码的时候Statusstatus;在不同的文件中它给我以下错误:Unrecognizedtype:46(ENUM_DEF)我知道早期版本的Processing不支持枚举,但2.0版支持吗?如果是这样,是什么原因导致错误? 最佳答案 当您为您的枚举创建一个新标签时,您是否附加了.jav

java - 使用 Apache BeanUtils 将字符串转换为枚举

我已经为ApacheBeanUtils库实现了一个转换器,用于将String转换为枚举常量:classEnumConverterimplementsConverter{@OverridepublicTconvert(ClasstClass,Objecto){StringenumValName=(String)o;Enum[]enumConstants=(Enum[])tClass.getEnumConstants();for(EnumenumConstant:enumConstants){if(enumConstant.name().equals(enumValName)){retur

java - 在 Java 中嵌套枚举

我想嵌套一些枚举。我代表的对象是标志,具有类型和值。类型的数量是离散的,每种类型都有一组不同的可能值。因此,如果类型A可以具有值1、2或3,而类型B可以具有值4、5、6,我希望能够执行以下操作:Flagf=Flag.A.1;f.getType()-returns"A"f.getValue()-returns"1"Flagf2=Flag.A.4;--Syntaxerror.试图在枚举中嵌套枚举让我发疯了——我正在尝试的是可能的——我是否需要完全放弃枚举并手工制作一个包含静态成员的静态类?到目前为止,我的最大努力是:publicclassFlag{enumAextendsFlag{ONE(